"""
线索模块
"""
import os
from time import sleep

from config.config import DATA_PATH
from page.xiansuo.add_clues_page import AddCluesPage
from cases.base_case import BaseCase
from page.xiansuo.clue_details_page import Clue_DetailsPage
from page.xiansuo.clue_main_page import ClueMainPage
from page.xiansuo.communication_log_page import CommunicationLogPage
from page.xiansuo.edit_clue_page import EditCluePage
from page.index_page import IndexPage
from tools.sjqd_way import read_data_from_excel
from tools.utils import get_table_text
import unittest


class TestACrmXs(BaseCase):
    #合法输入必填项添加线索
    def test_crm_xs_add(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加线索")
        lxrxm,sj,yx,zw = self.data[0]
        #点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        #点击新建线索
        bp = ClueMainPage(self.driver)
        bp.click_xjsx_btn()
        #输入联系人姓名
        cp = AddCluesPage(self.driver)
        cp.input_lxrxm(lxrxm)
        #输入手机
        cp.input_sj(int(sj))
        #输入邮箱
        cp.input_yx(yx)
        #点击保存
        cp.click_bc()
        #断言
        table_element = bp.get_table_element()
        LXRXM = get_table_text(table_element, 1, 3)
        self.assertEqual(lxrxm,LXRXM, "断言失败")

    #添加线索联系人姓名长度为1
    def test_crm_xs_add_lxrxm_long_one(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加线索")
        lxrxm, sj, yx, zw = self.data[1]
        #点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        #点击新建线索
        bp = ClueMainPage(self.driver)
        bp.click_xjsx_btn()
        #输入联系人姓名
        cp = AddCluesPage(self.driver)
        cp.input_lxrxm(lxrxm)
        #输入职位
        cp.input_zw(zw)
        #输入手机
        cp.input_sj(int(sj))
        #输入邮箱
        cp.input_yx(yx)
        #点击保存
        cp.click_bc()
        #断言
        table_element = bp.get_table_element()
        LXRXM = get_table_text(table_element, 1, 3)
        self.assertEqual(lxrxm, LXRXM, "断言失败")

    #添加线索联系人姓名长度为30
    def test_crm_xs_add_lxrxm_long_thirty(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加线索")
        lxrxm, sj, yx, zw = self.data[2]
        #点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        #点击新建线索
        bp = ClueMainPage(self.driver)
        bp.click_xjsx_btn()
        #输入联系人姓名
        cp = AddCluesPage(self.driver)
        cp.input_lxrxm(lxrxm)
        #输入职位
        cp.input_zw(zw)
        #输入手机
        cp.input_sj(int(sj))
        #输入邮箱
        cp.input_yx(yx)
        #点击保存
        cp.click_bc()
        #断言
        table_element = bp.get_table_element()
        LXRXM = get_table_text(table_element, 1, 3)
        self.assertEqual(lxrxm, LXRXM, "断言失败")

    #添加线索联系人职位长度为1
    def test_crm_xs_add_zw_long_one(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加线索")
        lxrxm, sj, yx, zw = self.data[4]
        #点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        #点击新建线索
        bp = ClueMainPage(self.driver)
        bp.click_xjsx_btn()
        #输入联系人姓名
        cp = AddCluesPage(self.driver)
        cp.input_lxrxm(lxrxm)
        #输入职位
        cp.input_zw(zw)
        #输入手机
        cp.input_sj(int(sj))
        #输入邮箱
        cp.input_yx(yx)
        #点击保存
        cp.click_bc()
        #断言
        table_element = bp.get_table_element()
        LXRXM = get_table_text(table_element, 1, 3)
        self.assertEqual(lxrxm, LXRXM, "断言失败")

    #添加线索联系人职位长度为30
    def test_crm_xs_add_zw_long_thirty(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加线索")
        lxrxm, sj, yx, zw = self.data[5]
        #点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        #点击新建线索
        bp = ClueMainPage(self.driver)
        bp.click_xjsx_btn()
        #输入联系人姓名
        cp = AddCluesPage(self.driver)
        cp.input_lxrxm(lxrxm)
        #输入职位
        cp.input_zw(zw)
        #输入手机
        cp.input_sj(int(sj))
        #输入邮箱
        cp.input_yx(yx)
        #点击保存
        cp.click_bc()
        #断言
        table_element = bp.get_table_element()
        LXRXM = get_table_text(table_element, 1, 3)
        self.assertEqual(lxrxm, LXRXM, "断言失败")


    #添加线索联系人手机长度超11位
    def test_crm_xs_add_sj_long_twelve(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加线索")
        lxrxm, sj, yx, zw = self.data[3]
        #点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        #点击新建线索
        bp = ClueMainPage(self.driver)
        bp.click_xjsx_btn()
        #输入联系人姓名
        cp = AddCluesPage(self.driver)
        cp.input_lxrxm(lxrxm)
        #输入职位
        cp.input_zw(zw)
        #输入手机
        cp.input_sj(int(sj))
        #输入邮箱
        cp.input_yx(yx)
        #点击保存
        cp.click_bc()
        #断言
        text = "手机格式不正确"
        text1 = self.driver.switch_to.alert.text
        self.assertEqual(text1,text, "断言失败")

    #线索页面分页
    def test_crm_xs_panging(self):
        #点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        #点击下一页
        bp = ClueMainPage(self.driver)
        bp.click_xsc_btn()
        #断言
        url = "http://192.168.1.25/crm/index.php?m=leads&a=index&listrows=15&p=2"
        url1 = self.driver.current_url
        self.assertEqual(url,url1,"断言失败")

    #编辑线索
    def test_crm_xs_bjxs(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "编辑线索")
        xsfzr,jd,xclxsj,xclxnr,gsm,bz,lxrxm,sj,yx,zw = self.data[0]
        # 点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        # 点击查看
        bp = ClueMainPage(self.driver)
        bp.click_ck_btn()
        #点击修改按钮
        cp = Clue_DetailsPage(self.driver)
        cp.click_xg()
        #输入线索负责人
        dp =EditCluePage(self.driver)
        dp.input_xsfzr(xsfzr)
        #选择来源
        dp.choose_ly(1)
        #输入职位
        dp.input_zw(zw)
        #输入手机
        dp.input_sj(int(sj))
        #选择省份
        dp.choose_sf(1)
        #选择城市
        dp.choose_cs(1)
        #选择地区
        dp.choose_dq(1)
        #输入街道
        dp.input_jd(jd)
        #输入下次联系时间
        dp.input_xclxsj(xclxsj)
        #输入公司名
        dp.input_gsm(gsm)
        #输入联系人姓名
        dp.input_lxrxm(lxrxm)
        #选择尊称
        dp.choose_zc(1)
        #输入邮箱
        dp.input_yx(yx)
        #输入下次联系内容
        dp.input_xclxnr(xclxnr)
        #输入备注
        dp.input_bz(bz)
        #点击空白处
        dp.click_kb()
        #点击保存
        dp.click_bc()
        #断言
        table_element = bp.get_table_element()
        LXRXM = get_table_text(table_element, 1, 3)
        self.assertEqual(lxrxm, LXRXM, "断言失败")


    #删除线索
    def test_crm_xs_delete(self):
        text = "确定要删除么？"
        url = "http://192.168.1.25/crm/index.php?m=leads&a=index"
        # 点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        # 点击查看
        bp = ClueMainPage(self.driver)
        bp.click_ck_btn()
        #点击删除按钮
        cp = Clue_DetailsPage(self.driver)
        cp.click_sc()
        #获取弹窗文本
        text1 = self.driver.switch_to.alert.text
        #接受弹窗消息
        self.driver.switch_to.alert.accept()
        #获取删除后的url地址
        url1=self.driver.current_url
        #断言
        self.assertEqual(text1,text,"断言失败")
        self.assertEqual(url,url1,"断言失败")



    #添加日志
    def test_crm_log(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加日志")
        bt,nr,xclxsj,xclxnr,text= self.data[0]
        # 点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        # 点击查看
        bp = ClueMainPage(self.driver)
        bp.click_ck_btn()
        # 点击沟通日志
        cp = Clue_DetailsPage(self.driver)
        cp.click_gtrz()
        #点击添加按钮
        dp = CommunicationLogPage(self.driver)
        dp.click_add()
        #输入标题
        dp.input_bt(bt)
        #输入内容
        dp.input_nr(nr)
        #输入下次联系时间
        dp.input_xclxsj(xclxsj)
        #输入下次联系内容
        dp.input_xclxnr(xclxnr)
        #点击提交
        dp.click_tj()
        sleep(2)
        #获取添加后文本
        text1=cp.get_table_element()
        #断言
        self.assertIn(text,text1,"断言失败")




    #输入标题长度为1添加日志
    def test_crm_log_bt_long_one(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加日志")
        bt, nr, xclxsj, xclxnr, text = self.data[1]
        # 点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        # 点击查看
        bp = ClueMainPage(self.driver)
        bp.click_ck_btn()
        # 点击沟通日志
        cp = Clue_DetailsPage(self.driver)
        cp.click_gtrz()
        #点击添加按钮
        dp = CommunicationLogPage(self.driver)
        dp.click_add()
        #输入标题
        dp.input_bt(bt)
        #输入内容
        dp.input_nr(nr)
        #输入下次联系时间
        dp.input_xclxsj(xclxsj)
        #输入下次联系内容
        dp.input_xclxnr(xclxnr)
        #点击提交
        dp.click_tj()
        # 获取添加后文本
        text1 = cp.get_table_element()
        # 断言
        self.assertIn(text, text1, "断言失败")


    #输入标题长度为30添加日志
    def test_crm_log_bt_long_thirty(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加日志")
        bt, nr, xclxsj, xclxnr, text = self.data[2]
        # 点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        # 点击查看
        bp = ClueMainPage(self.driver)
        bp.click_ck_btn()
        # 点击沟通日志
        cp = Clue_DetailsPage(self.driver)
        cp.click_gtrz()
        #点击添加按钮
        dp = CommunicationLogPage(self.driver)
        dp.click_add()
        #输入标题
        dp.input_bt(bt)
        #输入内容
        dp.input_nr(nr)
        #输入下次联系时间
        dp.input_xclxsj(xclxsj)
        #输入下次联系内容
        dp.input_xclxnr(xclxnr)
        #点击提交
        dp.click_tj()
        # 获取添加后文本
        text1 = cp.get_table_element()
        # 断言
        self.assertIn(text, text1, "断言失败")


    #输入联系人姓名长度为1添加日志
    def test_crm_log_lxrxm_long_one(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加日志")
        bt, nr, xclxsj, xclxnr, text = self.data[3]
        # 点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        # 点击查看
        bp = ClueMainPage(self.driver)
        bp.click_ck_btn()
        # 点击沟通日志
        cp = Clue_DetailsPage(self.driver)
        cp.click_gtrz()
        #点击添加按钮
        dp = CommunicationLogPage(self.driver)
        dp.click_add()
        #输入标题
        dp.input_bt(bt)
        #输入内容
        dp.input_nr(nr)
        #输入下次联系时间
        dp.input_xclxsj(xclxsj)
        #输入下次联系内容
        dp.input_xclxnr(xclxnr)
        #点击提交
        dp.click_tj()
        # 获取添加后文本
        text1 = cp.get_table_element()
        # 断言
        self.assertIn(text, text1, "断言失败")


    #输入联系人姓名长度为30添加日志
    def test_crm_log_lxrxm_long_thirty(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加日志")
        bt, nr, xclxsj, xclxnr, text = self.data[4]
        # 点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        # 点击查看
        bp = ClueMainPage(self.driver)
        bp.click_ck_btn()
        # 点击沟通日志
        cp = Clue_DetailsPage(self.driver)
        cp.click_gtrz()
        #点击添加按钮
        dp = CommunicationLogPage(self.driver)
        dp.click_add()
        #输入标题
        dp.input_bt(bt)
        #输入内容
        dp.input_nr(nr)
        #输入下次联系时间
        dp.input_xclxsj(xclxsj)
        #输入下次联系内容
        dp.input_xclxnr(xclxnr)
        #点击提交
        dp.click_tj()
        # 获取添加后文本
        text1 = cp.get_table_element()
        # 断言
        self.assertIn(text, text1, "断言失败")



    #输入标题长度为空添加日志
    def test_crm_log_bt_long_null(self):
        self.data = read_data_from_excel(os.path.join(DATA_PATH,"datas.xls"), "添加日志")
        bt, nr, xclxsj, xclxnr, text = self.data[5]
        # 点击线索按钮
        ap = IndexPage(self.driver)
        ap.click_xiansuo_btn()
        # 点击查看
        bp = ClueMainPage(self.driver)
        bp.click_ck_btn()
        # 点击沟通日志
        cp = Clue_DetailsPage(self.driver)
        cp.click_gtrz()
        #点击添加按钮
        dp = CommunicationLogPage(self.driver)
        dp.click_add()
        #输入标题
        dp.input_bt(bt)
        #输入内容
        dp.input_nr(nr)
        #输入下次联系时间
        dp.input_xclxsj(xclxsj)
        #输入下次联系内容
        dp.input_xclxnr(xclxnr)
        #点击提交
        dp.click_tj()
        #获取弹窗文本
        text1 = self.driver.switch_to.alert.text
        # 断言
        self.assertIn(text, text1, "断言失败")

if __name__ == '__main__':
    unittest.main()




